# 综合案例 -- 循环嵌套
# 需求：
# 有两个参数：手机号和密码
# 手机号的测试数据有三个，密码的测试数据也有三个
# 最后组装成元组列表类型的数据作为最终的测试数据: [(手机号1,密码1),(手机号2,密码2),...]
# 总共需要几种场景的测试数据

# phone_list = ['13878521111','13999992222','150999933331']
# password_list = ['123456','456abc','aaaaaa']
# 定义空列表
# result = []
# for i in phone_list:
#     for j in password_list:
#         element = (i,j)
#         result.append(element)
# print(result)
# # 计算有几种场景需要覆盖
# print(len(result))

# 案例：从1~10中获取每个整数的平方，保存到列表中
# 方式一
# res1 = []
# for i in range(1,11):
#     res1.append(i**2)
# print(res1)

# 方式二
# res2 = [i**2 for i in range(1,11)]
# print(res2)

# 案例：从1~10中获取每个整数偶数的平方，保存到列表中
# res3 = [i ** 2 for i in range(1,11) if i % 2 == 0]
# print(res3)
#
# result1 = [(i,j) for i in phone_list for j in password_list]
# print(result1)

# 函数的使用
# 定义函数
# def deom():
#     """测试函数"""
#     print("这个是测试函数")
# deom()

# 案例演示 -- 登录案例优化
# 需求：1、定义字典存储测试数据，包含账号和密码
# 提示：[{“username"："13488888888”，“password”："123456"）,{“username"：""，“password”："123456”】
# 2、遍历数据进行测试账号和密码校验
# 3、当手机号为”13488888888”且密码为“123456”时，输出“登录成功”；否则“错误或密码错误”。

# 定义字典元素的列表
login_data = [
    {"username": "13488888888", "password": "123456"},
    {"username": "", "password": "123456"},
    {"username": "13800000001", "password": ""},
    {"username": "13800000001", "password": "123"}
    ]
# 1.先实现业务功能（函数）
def login(phone, pwd):
    """
    登录判断函数
    :param phone: 手机号
    :param pwd: 密码
    :return: 无
    """
    if phone == "13488888888" and pwd == "123456":
        print("登录成功")
    else:
        print("登录失败")

# 在构造数据进行验证
num = 1 # 计数器
for i in login_data:
    # 获取账号密码
    phone = i.get("username")
    pwd = i.get("password")
    print(f"第{num}次测试")
    # 调用函数
    login(phone, pwd)
    # 调用一次计数器增1
    num += 1

# 定义有形参数  案例1
# 定义函数
def login(phone):
    """
    模拟登录
    :param phone: 验证手机号
    :return: 返回账号的结果
    """
    # 模拟登录
    if phone == "13488888888":
        return "账号正确" # 判断之后的结果返回给调用者
    else:
        return "账号错误"
# 调用函数
a = login("13800000001") # 返回的结果找变量接收
print(a) # 想看结果就直接打印出来
print(login("13488888888"))
# 调用函数断言结果
assert "账号错误" == login("13800000001")
assert "正确" in login("13488888888")

# 案例2
# 需求：设计一个函数用于获取两个数中的较大数，数据来自于函数的参数，最后返回较大值
# 1.定义函数
def get_max(num1, num2):
     """获取较大值函数"""
# 有两个数字：直接通过参数传递
# 判断大小关系
     if num1 > num2:
    # 返回较大值
         return num1
     else:
         return num2
# 2.调用函数
num = get_max(10, 20)
print(num)
print(get_max(10, 20))


